package com.tinygray;

import java.util.HashMap;

/**
 * @Author: tinygray
 * @Description: 公众号:Madison龙少，关注我你会越来越优秀。
 * @className: algorithm
 * @create: 2021-04-27 21:40
 */
public class algorithm {
    public static void getNumberOfOccurrencesOFTheString_HashMap(String str) {
        //将字符串转化为字符数组
        char[] chars = str.toCharArray();
        //创建一个HashMap
        HashMap<Character,Integer> hashMap = new HashMap<>();
        //遍历字符串数组
        for (char c : chars) {
            //当hashmap里面不存在字符key的时候
            if (!hashMap.containsKey(c)) {
                hashMap.put(c, 1);
            }else {
                //否则就是hashmap里面存在字符key 然后吧之前的值加1
                hashMap.put(c, hashMap.get(c) + 1);
            }
            //或者用下面这个语句替换上面的if else
            //hashMap.put(c, hashMap.containsKey(c) ? hashMap.get(c) + 1 : 1);
        }
        //遍历hashmap的key输出
        for (Character key : hashMap.keySet()) {
            System.out.println("key=" + key + "\t" + "value=" + hashMap.get(key));
        }
    }
    public static void getNumberOfOccurrencesOFTheString_Ascall(String str){
        //创建26个空间大小的数组，存放26个字母
        int[] nums = new int[26];
        for(char i: str.toCharArray()){
            //自动将char i转化成ascall码
            if(i>=97 && i<= 122){
                //利用数组的索引进行存储
                nums[i-97]++;
            }
        }

        for(int i = 0; i< nums.length; i++){
            if(nums[i] != 0){
                //i加上97并且再转化为char类型就可以显示相应的字符
                char key = (char)(i+97);
                System.out.println("key=" + key + "\t" + "value=" + nums[i]);
            }
        }
    }

    public static void main(String[] args) {
//        getNumberOfOccurrencesOFTheString_HashMap("abcaaaefdabbhg");
        getNumberOfOccurrencesOFTheString_Ascall("abcaaaefdabbhg");
    }
}
